মেশিন লার্নিং এবং ডিপ লার্নিং এ Image এবং Text ডেটা দিয়ে মডেল ট্রেনিং একটি অত্যন্ত জনপ্রিয় প্রক্রিয়া। এটি কম্পিউটার ভিশন (Computer Vision) এবং ন্যাচারাল ল্যাঙ্গুয়েজ প্রসেসিং (Natural Language Processing) এর মধ্যে একটি ক্রস-ডোমেইন অ্যাপ্লিকেশন হিসেবে পরিচিত। আমরা এখানে দুটি ভিন্ন ধরণের ডেটা নিয়ে মডেল ট্রেনিং করার উদাহরণ দেখবো: একটি Image Classification এবং একটি Text Classification প্রজেক্ট।
১. Image Classification with Convolutional Neural Network (CNN)
Image Classification হল একটি কম্পিউটার ভিশন কাজ, যেখানে একটি নির্দিষ্ট ছবির মধ্যে সঠিক শ্রেণী বা কেটেগরি নির্ধারণ করা হয়। এখানে আমরা Fashion MNIST Dataset ব্যবহার করে একটি সাধারণ Convolutional Neural Network (CNN) দিয়ে মডেল ট্রেনিং করব।
১.১ Dataset: Fashion MNIST
Fashion MNIST একটি সহজ ডেটাসেট যা ৭০,০০০ গ্রayscale ছবি ধারণ করে, যেখানে প্রতিটি ছবি 28x28 পিক্সেল সাইজের এবং ১০টি ভিন্ন ধরনের পোশাকের শ্রেণীভুক্ত।
১.২ মডেল তৈরি
# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import numpy as np
import matplotlib.pyplot as plt
from tensorflow.keras.datasets import fashion_mnist
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv2D, MaxPooling2D, Flatten, Dense
from tensorflow.keras.utils import to_categorical
# Fashion MNIST ডেটাসেট লোড করা
(X_train, y_train), (X_test, y_test) = fashion_mnist.load_data()
# ডেটা রিসাইজ এবং নরমালাইজ করা
X_train = X_train.reshape((X_train.shape[0], 28, 28, 1)).astype('float32') / 255
X_test = X_test.reshape((X_test.shape[0], 28, 28, 1)).astype('float32') / 255
# আউটপুট ক্যাটেগরি এনকোড করা (one-hot encoding)
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
# CNN মডেল তৈরি করা
model = Sequential()
model.add(Conv2D(32, kernel_size=(3, 3), activation='relu', input_shape=(28, 28, 1)))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, kernel_size=(3, 3), activation='relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(128, activation='relu'))
model.add(Dense(10, activation='softmax')) # 10 ক্লাসের জন্য সিগময়েড ফাংশন
# মডেল কম্পাইল করা
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
# মডেল ট্রেনিং
model.fit(X_train, y_train, epochs=10, batch_size=200, validation_data=(X_test, y_test))
# মডেল মূল্যায়ন
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Test accuracy: {accuracy*100:.2f}%')
১.৩ বিশ্লেষণ:
- Dataset: Fashion MNIST ব্যবহার করা হয়েছে, যেখানে ১০টি শ্রেণী রয়েছে।
- Model: একটি সাধারণ Convolutional Neural Network (CNN) তৈরি করা হয়েছে, যেখানে ২টি কনভোলিউশনাল লেয়ার, পুলিং লেয়ার এবং একটি ডেন্স লেয়ার রয়েছে।
- Performance: Accuracy এবং Loss মূল্যায়ন করা হয়েছে।
এই মডেলটি ১০টি ফ্যাশন আইটেমের মধ্যে ছবি ক্লাসিফাই করতে সক্ষম হবে।
২. Text Classification with LSTM (Long Short-Term Memory)
Text Classification সাধারণত টেক্সট ডেটার শ্রেণীবিভাগে ব্যবহৃত হয়। এখানে আমরা একটি সাধারণ LSTM মডেল দিয়ে Sentiment Analysis কাজ করব, যেখানে টেক্সট ডেটার ওপর ভিত্তি করে মডেলটি জানাবে এটি পজিটিভ নাকি নেগেটিভ সেন্টিমেন্ট।
২.১ Dataset: IMDB Movie Reviews
IMDB ডেটাসেট হলো একটি জনপ্রিয় টেক্সট ডেটাসেট যা মুভি রিভিউ (positive/negative) ভিত্তিক। এখানে LSTM মডেল ব্যবহার করে সেন্টিমেন্ট এনালাইসিস করা হবে।
২.২ মডেল তৈরি
# প্রয়োজনীয় লাইব্রেরি ইমপোর্ট করা
import numpy as np
from tensorflow.keras.datasets import imdb
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Embedding, LSTM, Dense, Dropout
from tensorflow.keras.preprocessing.sequence import pad_sequences
from tensorflow.keras.optimizers import Adam
# IMDB ডেটাসেট লোড করা
(X_train, y_train), (X_test, y_test) = imdb.load_data(num_words=10000)
# টেক্সট ডেটা প্যাড করা যাতে সমস্ত সিকোয়েন্স একই দৈর্ঘ্যের হয়
X_train = pad_sequences(X_train, maxlen=500)
X_test = pad_sequences(X_test, maxlen=500)
# LSTM মডেল তৈরি করা
model = Sequential()
model.add(Embedding(input_dim=10000, output_dim=128, input_length=500))
model.add(LSTM(100, return_sequences=False))
model.add(Dropout(0.2))
model.add(Dense(1, activation='sigmoid')) # বাইনারি ক্লাসিফিকেশন
# মডেল কম্পাইল করা
model.compile(optimizer=Adam(), loss='binary_crossentropy', metrics=['accuracy'])
# মডেল ট্রেনিং
model.fit(X_train, y_train, epochs=5, batch_size=64, validation_data=(X_test, y_test))
# মডেল মূল্যায়ন
loss, accuracy = model.evaluate(X_test, y_test)
print(f'Test accuracy: {accuracy*100:.2f}%')
২.৩ বিশ্লেষণ:
- Dataset: IMDB ডেটাসেট ব্যবহার করা হয়েছে, যা ১০,০০০টি সর্বাধিক ব্যবহৃত শব্দের উপর ভিত্তি করে।
- Model: LSTM ব্যবহার করা হয়েছে, যা টেক্সট সিকোয়েন্স ডেটার জন্য উপযুক্ত। এখানে Embedding লেয়ার ব্যবহার করা হয়েছে যাতে ইনপুট টেক্সটের শব্দ ভেক্টরাইজেশন করা যায়।
- Performance: Accuracy এবং Loss মূল্যায়ন করা হয়েছে।
এই মডেলটি positive বা negative সেন্টিমেন্টের উপর ভিত্তি করে মুভি রিভিউ বিশ্লেষণ করতে সক্ষম হবে।
৩. সংক্ষেপে
- Image Data: CNN (Convolutional Neural Networks) ব্যবহৃত হয় ছবি প্রক্রিয়া এবং শ্রেণীবিভাগের জন্য।
- Text Data: LSTM (Long Short-Term Memory) ব্যবহার করা হয় টেক্সট সিকোয়েন্স বা ভাষা বিশ্লেষণ করার জন্য, যেখানে দীর্ঘ সময়কালের নির্ভরশীলতা দরকার।
এ দুটি মডেল Image Classification এবং Text Classification এর ক্ষেত্রে অত্যন্ত কার্যকরী এবং জনপ্রিয় পদ্ধতি।
Read more